/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.linguagem.contabilidade;

import java.awt.HeadlessException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.BigInteger;
import javax.swing.Icon;
import javax.swing.JOptionPane;

/**
 *
 * @author Fatec
 */
public class main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        try {
            //JOptionPane.showMessageDialog(null, nome, "Nome da Empresa", JOptionPane.INFORMATION_MESSAGE);
            //chamar todas as variaveis e atribuir valor a elas
            String nome = JOptionPane.showInputDialog("Digite o nome da empresa");
            String cnpj = JOptionPane.showInputDialog("Digite o CNPJ da empresa");
            Valor banco = new Valor(JOptionPane.showInputDialog("Digite o valor para Banco"));
            Valor aplicacoes = new Valor(JOptionPane.showInputDialog("Digite o valor para Aplicações"));
            Valor caixa = new Valor(JOptionPane.showInputDialog("Digite o valor para Caixa"));
            Valor duplicatasAReceber = new Valor(JOptionPane.showInputDialog("Digite o valor para Duplicatas"));
            Valor estoque = new Valor(JOptionPane.showInputDialog("Digite o valor para Estoque"));
            Valor ICMSARecuperar = new Valor(estoque.getValor().multiply(BigDecimal.valueOf(1.18)));
            Valor materiaisDeEscritorio = new Valor(JOptionPane.showInputDialog("Digite o valor para Materiais de Escritório"));
            Valor materiaisDeLimpeza = new Valor(JOptionPane.showInputDialog("Digite o valor para Materiais de Limpeza"));
            // </  ATIVO/CIRCULANTE>
            // <  ATIVO/NÃO CIRCULANTE>
            Valor automovel = new Valor(JOptionPane.showInputDialog("Digite o valor gasto com Automoveis"));
            Valor informatica = new Valor(JOptionPane.showInputDialog("Digite o valor para Materiais de informatica"));
            Valor movel = new Valor(JOptionPane.showInputDialog("Digite o valor gasto com Moveis"));
            Valor investimentos = new Valor(JOptionPane.showInputDialog("Digite o valor para Investimentos"));
            Valor depreciacao = new Valor(JOptionPane.showInputDialog("Digite o valor para a Depreciação"));
            Valor marketing = new Valor(JOptionPane.showInputDialog("Digite o valor com Marketing"));
            // </  ATIVO/NÃO CIRCULANTE>
            // <  PASSIVO/CIRCULANTE>
            Valor fornecedor = new Valor(JOptionPane.showInputDialog("Digite o valor para Fornecedor"));
            Valor duplicatasAPagar = new Valor(JOptionPane.showInputDialog("Digite o valor para Duplicatas a Pagar"));
            Valor ICMSARecolher = new Valor(JOptionPane.showInputDialog("Digite o valor para ICMS a Recolher"));
            Valor salarios = new Valor(JOptionPane.showInputDialog("Digite o valor para Salarios"));
            Valor agua = new Valor(JOptionPane.showInputDialog("Digite o valor para a Conta de Água"));
            Valor energiaEletrica = new Valor(JOptionPane.showInputDialog("Digite o valor para a Conta de Energia Elétrica"));
            Valor telefone = new Valor(JOptionPane.showInputDialog("Digite o valor para a conta Telefonica"));
            Valor aluguel = new Valor(JOptionPane.showInputDialog("Digite o valor para Alugueis"));
            // </  PASSIVO/CIRCULANTE>
            // <  PASSIVO/NÃO CIRCULANTE>
            Valor duplicasAPagar_passivo = new Valor(JOptionPane.showInputDialog("Digite o valor para Duplicatas a pagar"));
            // </  PASSIVO/NÃO CIRCULANTE>
            // <CMV>
            Valor cmv = new Valor(JOptionPane.showInputDialog("Digite o valor para CMV (Custo das Mercadorias Vendidas)"));
            // </ CMV>
            // <PATRIMONIO LIQUIDO>
            Valor capitalSocial = new Valor(JOptionPane.showInputDialog("Digite o valor para o Capital Social"));
            Valor reservaDeCapital = new Valor(JOptionPane.showInputDialog("Digite o valor para a reserva de Capital"));
            Valor lucro = new Valor(JOptionPane.showInputDialog("Digite o valor para o Lucro"));
            // </ PATRIMONIO LIQUIDO>
            // <RECEITA>
            Valor venda = new Valor(JOptionPane.showInputDialog("Digite o valor para Vendas"));
            Valor ICMSSobreVenda = new Valor(venda.getValor().multiply(BigDecimal.valueOf(1.18)));
            Valor jurosAtivo = new Valor(JOptionPane.showInputDialog("Digite o valor para Juros Ativos"));
            Valor descontoObtido = new Valor(JOptionPane.showInputDialog("Digite o valor para Descontos Obtidos"));
            // </ RECEITA>
            // <DESPESA>
            Valor jurosPassivo = new Valor(JOptionPane.showInputDialog("Digite o valor para Juros Passivo"));
            Valor descontoConcebido = new Valor(JOptionPane.showInputDialog("Digite o valor para Descontos Concebidos"));
            // </ DESPESA>
            // <VERIFICAÇÃO>
            Valor debito = new Valor((banco.getValorLong() + caixa.getValorLong() + aplicacoes.getValorLong() + duplicatasAReceber.getValorLong() + estoque.getValorLong() + materiaisDeEscritorio.getValorLong() + materiaisDeLimpeza.getValorLong() + ICMSARecuperar.getValorLong() + automovel.getValorLong() + informatica.getValorLong() + movel.getValorLong() + investimentos.getValorLong() + marketing.getValorLong() + depreciacao.getValorLong() + salarios.getValorLong() + agua.getValorLong() + energiaEletrica.getValorLong() + telefone.getValorLong() + aluguel.getValorLong() + ICMSSobreVenda.getValorLong() + jurosPassivo.getValorLong() + descontoConcebido.getValorLong() + cmv.getValorLong()));
            Valor credito = new Valor(fornecedor.getValorLong() + duplicasAPagar_passivo.getValorLong() + ICMSARecolher.getValorLong() + duplicatasAPagar.getValorLong() + jurosAtivo.getValorLong() + descontoObtido.getValorLong() + capitalSocial.getValorLong() + reservaDeCapital.getValorLong() + lucro.getValorLong() + venda.getValorLong());
            DadosEmpresa dados = new DadosEmpresa(nome, cnpj, banco, aplicacoes, caixa, duplicatasAReceber, estoque, ICMSARecuperar, materiaisDeEscritorio, materiaisDeLimpeza, automovel, informatica, movel, investimentos, depreciacao, marketing, fornecedor, duplicatasAPagar, ICMSARecolher, salarios, agua, energiaEletrica, telefone, aluguel, duplicasAPagar_passivo, cmv, capitalSocial, reservaDeCapital, lucro, venda, ICMSSobreVenda, jurosAtivo, descontoObtido, jurosPassivo, descontoConcebido, debito, credito);
            System.out.println(dados.gerarBalanco(dados));
            System.out.println("███████████████████████████████\n");
            System.out.println(dados.gerarDRE(dados));
            System.out.println("███████████████████████████████\n");
            System.out.println("Débito: " + dados.getDebito().getValorFormatado() + "      Crédito: " + dados.getCredito().getValorFormatado());
            System.out.println("█║▌│█│║▌║││█║▌│║▌║█║▌│║│▌│▌║▌│█\n");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Você não preencheu corretamente todos os campos", e.getMessage(), JOptionPane.INFORMATION_MESSAGE);
        } finally {
            System.exit(0);
        }
    }
}
